// axios 二次封装

import axios from 'axios'

const axiosInstance = axios.create({
    baseURL: 'http://localhost:3000',
    timeout: 1000,
    headers:{}, // 通用得到请求头
});

// 对于接口, 所用通用操作, 同一进行封装
// 请求和响应的拦截器

// 请求的拦截器
// 1. 第一个参数是客户端请求成功, 执行
// 2. 第二个参数是客户端请求失败, 执行
// 拦截器是一个链式的调用方式, 先进行拦截器, 然后发送新的请求, 最后响应拦截器
axiosInstance.interceptors.request.use(function(config){
    // 可以修改请求的配置信息, 修改请求头, 超时时间, 接口地址
    return config;
}, function(error){
    // 查看请求失败的原因
    // axios 基于 promise
    return Promise.reject(error);
});

// 注册响应的拦截器
axios.interceptors.response.use(function (data){
    // 服务器端返回200状态码
    // 可以对调用的返回数据进行修改

    return data;
}, function(error){
    // 服务器端返回非200状态码
    // 进行统一的错误处理
    // 获取服务器端返回的状态码 error.response.status
    // 401  -- 处理
    // 500  -- 处理
    return Promise.reject(error);
});

export default axiosInstance;